package com.example.demo_handler

import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.util.Log
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

class MainActivity2 : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main2)
        Thread{

            //原因：Message--->Handler(target)--->MainActivity2(非静态内部类)，页面关闭的时候，由于10s延迟消息，Message存活，Handler存活，MainActivity2存活，MainActivity2产生内存泄漏
            //解决方案1:将Handler静态内部类
            //解决方案2:页面销毁的时候，调用removeCallbacksAndMessages把未处理完的消息清空
            handler.sendEmptyMessageDelayed(101,10*1000) //10秒延迟
        }.start()

    }

    override fun onDestroy() {
        super.onDestroy()
        //页面销毁的时候，把未处理完的消息清空
        handler.removeCallbacksAndMessages(null)
    }

    //非静态内部类：持有外部类对象的引用
    inner class A {}
    //静态内部类：不持有外部类对象的引用
    companion object{
        class B{

        }
    }
    //匿名内部类：持有外部类对象的引用
    val handler:Handler = object :Handler(Looper.getMainLooper()){
        override fun handleMessage(msg: Message) {
            super.handleMessage(msg)
            Log.d("TAG", "handleMessage: ")
        }
    }



}